 /*
 * Vendas.java
 *
 * Created on 29/10/2009, 16:04:04
 * Copyright Administrador
 */
package Adecot.Vendas;

import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlDataTable;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlOutputText;
import com.icesoft.faces.component.ext.HtmlPanelGrid;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.ext.UIColumn;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectedData;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectionItems;
import com.icesoft.faces.component.jsfcl.data.DefaultTableDataModel;
import com.icesoft.faces.component.jsfcl.data.PopupBean;
import com.icesoft.faces.component.panelpopup.PanelPopup;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import javax.faces.FacesException;
import Adecot.RequestBean1;
import Adecot.SessionBean1;
import Adecot.ApplicationBean1;
import Controller.AssociadoBO;
import Controller.EmpresaBO;
import Controller.Facade.ValidaFacade;
import Controller.Facade.IceDecorator;
import Controller.ItemPedidoAssociadoBO;
import Controller.PedidoEmpresaBO;
import Controller.VendaBO;
import Model.ItemPedidoAssociado;
import Model.ItemPrevisao;
import Model.PedidoEmpresaVO;
import Model.Venda;
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.DoubleConverter;
import javax.faces.convert.IntegerConverter;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 */
public class Vendas extends AbstractPageBean {
   // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

   private int __placeholder;

   /**
    * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
    * This method is automatically generated, so any user-specified code inserted
    * here is subject to being replaced.</p>
    */
   private void _init() throws Exception {
   }
   private static List<Venda> vendasExcluidas = new ArrayList<Venda>();
   private DefaultSelectedData selectOneMenu1Bean = new DefaultSelectedData();
   double valorTotalVenda = 0.0;
   double valorTotalComissao = 0.0;
   private List<ItemPedidoAssociado> itemAux;

    public List<ItemPedidoAssociado> getItemAux() {
        return itemAux;
    }

    public void setItemAux(List<ItemPedidoAssociado> itemAux) {
        this.itemAux = itemAux;
    }

   public DefaultSelectedData getSelectOneMenu1Bean() {
      return selectOneMenu1Bean;
   }

   public void setSelectOneMenu1Bean(DefaultSelectedData dsd) {
      this.selectOneMenu1Bean = dsd;
   }
   private DefaultSelectedData empresaSelecionada = new DefaultSelectedData();
   private DefaultSelectedData dataSelecionada = new DefaultSelectedData();

   public DefaultSelectedData getDataSelecionada() {
      return dataSelecionada;
   }

   public void setDataSelecionada(DefaultSelectedData dataSelecionada) {
      this.dataSelecionada = dataSelecionada;
   }

   public DefaultSelectedData getEmpresaSelecionada() {
      return empresaSelecionada;
   }

   public void setEmpresaSelecionada(DefaultSelectedData empresaSelecionada) {
      this.empresaSelecionada = empresaSelecionada;
   }

   public DefaultSelectionItems getEmpresas() {
      return empresas;
   }

   public void setEmpresas(DefaultSelectionItems empresas) {
      this.empresas = empresas;
   }
   private DefaultSelectionItems empresas = new DefaultSelectionItems();
   private DefaultSelectionItems datas = new DefaultSelectionItems();

   public DefaultSelectionItems getDatas() {
      return datas;
   }

   public void setDatas(DefaultSelectionItems datas) {
      this.datas = datas;
   }
   private DefaultTableDataModel dataTable1Model = new DefaultTableDataModel();

   public DefaultTableDataModel getDataTable1Model() {
      return dataTable1Model;
   }

   public void setDataTable1Model(DefaultTableDataModel dtdm) {
      this.dataTable1Model = dtdm;
   }
   private DefaultTableDataModel dataTable2Model = new DefaultTableDataModel();

   public DefaultTableDataModel getDataTable2Model() {
      return dataTable2Model;
   }

   public void setDataTable2Model(DefaultTableDataModel dtdm) {
      this.dataTable2Model = dtdm;
   }
   private PopupBean panelPopup1Bean = new PopupBean();

   public PopupBean getPanelPopup1Bean() {
      return panelPopup1Bean;
   }

   public void setPanelPopup1Bean(PopupBean pb) {
      this.panelPopup1Bean = pb;
   }
   private PanelPopup painelSair = new PanelPopup();

   public PanelPopup getPainelSair() {
      return painelSair;
   }

   public void setPainelSair(PanelPopup pp) {
      this.painelSair = pp;
   }
   private HtmlDataTable dataTable1 = new HtmlDataTable();

   public HtmlDataTable getDataTable1() {
      return dataTable1;
   }

   public void setDataTable1(HtmlDataTable hdt) {
      this.dataTable1 = hdt;
   }
   private HtmlDataTable dataTable2 = new HtmlDataTable();

   public HtmlDataTable getDataTable2() {
      return dataTable2;
   }

   public void setDataTable2(HtmlDataTable hdt) {
      this.dataTable2 = hdt;
   }
   private HtmlSelectOneMenu comboEmpresa = new HtmlSelectOneMenu();

   public HtmlSelectOneMenu getComboEmpresa() {
      return comboEmpresa;
   }

   public void setComboEmpresa(HtmlSelectOneMenu hsom) {
      this.comboEmpresa = hsom;
   }
   private HtmlSelectOneMenu comboData = new HtmlSelectOneMenu();

   public HtmlSelectOneMenu getComboData() {
      return comboData;
   }

   public void setComboData(HtmlSelectOneMenu hsom) {
      this.comboData = hsom;
   }
   private HtmlInputText campoQuantidade = new HtmlInputText();

   public HtmlInputText getCampoQuantidade() {
      return campoQuantidade;
   }

   public void setCampoQuantidade(HtmlInputText hit) {
      this.campoQuantidade = hit;
   }
   private HtmlInputText campoPesoCaixa = new HtmlInputText();

   public HtmlInputText getCampoPesoCaixa() {
      return campoPesoCaixa;
   }

   public void setCampoPesoCaixa(HtmlInputText hit) {
      this.campoPesoCaixa = hit;
   }
   private HtmlInputText campoValorUnitario = new HtmlInputText();

   public HtmlInputText getCampoValorUnitario() {
      return campoValorUnitario;
   }

   public void setCampoValorUnitario(HtmlInputText hit) {
      this.campoValorUnitario = hit;
   }
   private HtmlInputText campoValorComissao = new HtmlInputText();

   public HtmlInputText getCampoValorComissao() {
      return campoValorComissao;
   }

   public void setCampoValorComissao(HtmlInputText hit) {
      this.campoValorComissao = hit;
   }
   private HtmlInputText campoValorVenda = new HtmlInputText();

   public HtmlInputText getCampoValorVenda() {
      return campoValorVenda;
   }

   public void setCampoValorVenda(HtmlInputText hit) {
      this.campoValorVenda = hit;
   }
   private HtmlInputText campoValorTotalComissao = new HtmlInputText();

   public HtmlInputText getCampoValorTotalComissao() {
      return campoValorTotalComissao;
   }

   public void setCampoValorTotalComissao(HtmlInputText hit) {
      this.campoValorTotalComissao = hit;
   }
   private HtmlCommandButton botaoNovo = new HtmlCommandButton();

   public HtmlCommandButton getBotaoNovo() {
      return botaoNovo;
   }

   public void setBotaoNovo(HtmlCommandButton hcb) {
      this.botaoNovo = hcb;
   }
   private HtmlCommandButton botaoConsultar = new HtmlCommandButton();

   public HtmlCommandButton getBotaoConsultar() {
      return botaoConsultar;
   }

   public void setBotaoConsultar(HtmlCommandButton hcb) {
      this.botaoConsultar = hcb;
   }
   private HtmlCommandButton botaoAlterar = new HtmlCommandButton();

   public HtmlCommandButton getBotaoAlterar() {
      return botaoAlterar;
   }

   public void setBotaoAlterar(HtmlCommandButton hcb) {
      this.botaoAlterar = hcb;
   }
   private HtmlCommandButton botaoImprimir = new HtmlCommandButton();

   public HtmlCommandButton getBotaoImprimir() {
      return botaoImprimir;
   }

   public void setBotaoImprimir(HtmlCommandButton hcb) {
      this.botaoImprimir = hcb;
   }
   private HtmlCommandButton botaoCadastrar1 = new HtmlCommandButton();

   public HtmlCommandButton getBotaoCadastrar1() {
      return botaoCadastrar1;
   }

   public void setBotaoCadastrar1(HtmlCommandButton hcb) {
      this.botaoCadastrar1 = hcb;
   }
   private HtmlCommandButton botaoLimpar = new HtmlCommandButton();

   public HtmlCommandButton getBotaoLimpar() {
      return botaoLimpar;
   }

   public void setBotaoLimpar(HtmlCommandButton hcb) {
      this.botaoLimpar = hcb;
   }
   private HtmlCommandButton botaoSair = new HtmlCommandButton();

   public HtmlCommandButton getBotaoSair() {
      return botaoSair;
   }

   public void setBotaoSair(HtmlCommandButton hcb) {
      this.botaoSair = hcb;
   }
   private UIColumn column3 = new UIColumn();

   public UIColumn getColumn3() {
      return column3;
   }

   public void setColumn3(UIColumn uic) {
      this.column3 = uic;
   }
   private UIColumn column4 = new UIColumn();

   public UIColumn getColumn4() {
      return column4;
   }

   public void setColumn4(UIColumn uic) {
      this.column4 = uic;
   }
   private HtmlCommandButton botaoSairSim = new HtmlCommandButton();

   public HtmlCommandButton getBotaoSairSim() {
      return botaoSairSim;
   }

   public void setBotaoSairSim(HtmlCommandButton hcb) {
      this.botaoSairSim = hcb;
   }
   private HtmlCommandButton botaoSairNao = new HtmlCommandButton();

   public HtmlCommandButton getBotaoSairNao() {
      return botaoSairNao;
   }

   public void setBotaoSairNao(HtmlCommandButton hcb) {
      this.botaoSairNao = hcb;
   }
   private HtmlOutputText msgPainelSair = new HtmlOutputText();

   public HtmlOutputText getMsgPainelSair() {
      return msgPainelSair;
   }

   public void setMsgPainelSair(HtmlOutputText hot) {
      this.msgPainelSair = hot;
   }
   private HtmlPanelGrid painelSairCabecalho = new HtmlPanelGrid();

   public HtmlPanelGrid getPainelSairCabecalho() {
      return painelSairCabecalho;
   }

   public void setPainelSairCabecalho(HtmlPanelGrid hpg) {
      this.painelSairCabecalho = hpg;
   }
   private javax.faces.component.html.HtmlCommandButton button1 = new javax.faces.component.html.HtmlCommandButton();

   public javax.faces.component.html.HtmlCommandButton getButton1() {
      return button1;
   }

   public void setButton1(javax.faces.component.html.HtmlCommandButton hcb) {
      this.button1 = hcb;
   }
   private PopupBean panelPopup1Bean1 = new PopupBean();

   public PopupBean getPanelPopup1Bean1() {
      return panelPopup1Bean1;
   }

   public void setPanelPopup1Bean1(PopupBean pb) {
      this.panelPopup1Bean1 = pb;
   }
   private PanelPopup painelMensagem = new PanelPopup();

   public PanelPopup getPainelMensagem() {
      return painelMensagem;
   }

   public void setPainelMensagem(PanelPopup pp) {
      this.painelMensagem = pp;
   }
   private DoubleConverter doubleConverter1 = new DoubleConverter();

   public DoubleConverter getDoubleConverter1() {
      return doubleConverter1;
   }

   public void setDoubleConverter1(DoubleConverter dc) {
      this.doubleConverter1 = dc;
   }
   private HtmlCommandButton botaoIncluir = new HtmlCommandButton();

   public HtmlCommandButton getBotaoIncluir() {
      return botaoIncluir;
   }

   public void setBotaoIncluir(HtmlCommandButton hcb) {
      this.botaoIncluir = hcb;
   }
   private HtmlOutputText msgMensagemOperacao = new HtmlOutputText();

   public HtmlOutputText getMsgMensagemOperacao() {
      return msgMensagemOperacao;
   }

   public void setMsgMensagemOperacao(HtmlOutputText hot) {
      this.msgMensagemOperacao = hot;
   }
   private IntegerConverter integerConverter1 = new IntegerConverter();

   public IntegerConverter getIntegerConverter1() {
      return integerConverter1;
   }

   public void setIntegerConverter1(IntegerConverter ic) {
      this.integerConverter1 = ic;
   }
    private PopupBean panelPopup1Bean2 = new PopupBean();

    public PopupBean getPanelPopup1Bean2() {
        return panelPopup1Bean2;
    }

    public void setPanelPopup1Bean2(PopupBean pb) {
        this.panelPopup1Bean2 = pb;
    }
    private DefaultSelectedData empresaConsultaSelecionada = new DefaultSelectedData();

    public DefaultSelectedData getEmpresaConsultaSelecionada() {
        return empresaConsultaSelecionada;
    }

    public void setEmpresaConsultaSelecionada(DefaultSelectedData dsd) {
        this.empresaConsultaSelecionada = dsd;
    }
    private DefaultSelectionItems empresasConsulta = new DefaultSelectionItems();

    public DefaultSelectionItems getEmpresasConsulta() {
        return empresasConsulta;
    }

    public void setEmpresasConsulta(DefaultSelectionItems dsi) {
        this.empresasConsulta = dsi;
    }
    private PanelPopup painelConsulta = new PanelPopup();

    public PanelPopup getPainelConsulta() {
        return painelConsulta;
    }

    public void setPainelConsulta(PanelPopup pp) {
        this.painelConsulta = pp;
    }
    private HtmlSelectOneMenu comboEmpresaConsulta = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getComboEmpresaConsulta() {
        return comboEmpresaConsulta;
    }

    public void setComboEmpresaConsulta(HtmlSelectOneMenu hsom) {
        this.comboEmpresaConsulta = hsom;
    }
    private DefaultSelectedData associadoConsultaSelecionado = new DefaultSelectedData();

    public DefaultSelectedData getAssociadoConsultaSelecionado() {
        return associadoConsultaSelecionado;
    }

    public void setAssociadoConsultaSelecionado(DefaultSelectedData dsd) {
        this.associadoConsultaSelecionado = dsd;
    }
    private DefaultSelectionItems associadosConsulta = new DefaultSelectionItems();

    public DefaultSelectionItems getAssociadosConsulta() {
        return associadosConsulta;
    }

    public void setAssociadosConsulta(DefaultSelectionItems dsi) {
        this.associadosConsulta = dsi;
    }
    private DefaultSelectedData dataConsultaSelecionada = new DefaultSelectedData();

    public DefaultSelectedData getDataConsultaSelecionada() {
        return dataConsultaSelecionada;
    }

    public void setDataConsultaSelecionada(DefaultSelectedData dsd) {
        this.dataConsultaSelecionada = dsd;
    }
    private DefaultSelectionItems datasSelecionada = new DefaultSelectionItems();

    public DefaultSelectionItems getDatasSelecionada() {
        return datasSelecionada;
    }

    public void setDatasSelecionada(DefaultSelectionItems dsi) {
        this.datasSelecionada = dsi;
    }
    private DefaultTableDataModel dataTable3Model = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable3Model() {
        return dataTable3Model;
    }

    public void setDataTable3Model(DefaultTableDataModel dtdm) {
        this.dataTable3Model = dtdm;
    }
    private HtmlDataTable tabelaVenda = new HtmlDataTable();

    public HtmlDataTable getTabelaVenda() {
        return tabelaVenda;
    }

    public void setTabelaVenda(HtmlDataTable hdt) {
        this.tabelaVenda = hdt;
    }
    private HtmlSelectOneMenu comboDataConsulta = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getComboDataConsulta() {
        return comboDataConsulta;
    }

    public void setComboDataConsulta(HtmlSelectOneMenu hsom) {
        this.comboDataConsulta = hsom;
    }
    private HtmlInputText campoValorVendaTotal = new HtmlInputText();

    public HtmlInputText getCampoValorVendaTotal() {
        return campoValorVendaTotal;
    }

    public void setCampoValorVendaTotal(HtmlInputText hit) {
        this.campoValorVendaTotal = hit;
    }
    

   // </editor-fold>
   /**
    * <p>Construct a new Page bean instance.</p>
    */
   public Vendas() {
   }

   /**
    * <p>Callback method that is called whenever a page is navigated to,
    * either directly via a URL, or indirectly via page navigation.
    * Customize this method to acquire resources that will be needed
    * for event handlers and lifecycle methods, whether or not this
    * page is performing post back processing.</p>
    *
    * <p>Note that, if the current request is a postback, the property
    * values of the components do <strong>not</strong> represent any
    * values submitted with this request.  Instead, they represent the
    * property values that were saved for this view when it was rendered.</p>
    */
   
   @Override
   public void init() {
      // Perform initializations inherited from our superclass
      super.init();
      // Perform application initialization that must complete
      // *before* managed components are initialized
      // TODO - add your own initialiation code here

      // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
      // Initialize automatically managed components
      // *Note* - this logic should NOT be modified
      try {
         _init();
      } catch (Exception e) {
         log("Vendas Initialization Failure", e);
         throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
      }
      painelConsulta.setRendered(false);
      painelSair.setRendered(false);
      painelMensagem.setRendered(false);
      //dataTable3Model.setWrappedData(null);
      //dataTable1Model.setWrappedData(null);

      
      limparCampos();
   // </editor-fold>
   // Perform application initialization that must complete
   // *after* managed components are initialized
   // TODO - add your own initialization code here
   }

   /**
    * <p>Callback method that is called after the component tree has been
    * restored, but before any event processing takes place.  This method
    * will <strong>only</strong> be called on a postback request that
    * is processing a form submit.  Customize this method to allocate
    * resources that will be required in your event handlers.</p>
    */
   @Override
   public void preprocess() {
   }

   /**
    * <p>Callback method that is called just before rendering takes place.
    * This method will <strong>only</strong> be called for the page that
    * will actually be rendered (and not, for example, on a page that
    * handled a postback and then navigated to a different page).  Customize
    * this method to allocate resources that will be required for rendering
    * this page.</p>
    */
   @Override
   public void prerender() {
   }

   /**
    * <p>Callback method that is called after rendering is completed for
    * this request, if <code>init()</code> was called (regardless of whether
    * or not this was the page that was actually rendered).  Customize this
    * method to release resources acquired in the <code>init()</code>,
    * <code>preprocess()</code>, or <code>prerender()</code> methods (or
    * acquired during execution of an event handler).</p>
    */
   @Override
   public void destroy() {
   }

   /**
    * <p>Retornar uma referÃªncia para o Bean de dados limitados.</p>
    *
    * @retorna uma referÃªncia para o bean de dados limitados
    */
   protected RequestBean1 getRequestBean1() {
      return (RequestBean1) getBean("RequestBean1");
   }

   /**
    * <p>Retornar uma referÃªncia para o Bean de dados limitados.</p>
    *
    * @retorna uma referÃªncia para o bean de dados limitados
    */
   protected SessionBean1 getSessionBean1() {
      return (SessionBean1) getBean("SessionBean1");
   }

   /**
    * <p>Retornar uma referÃªncia para o Bean de dados limitados.</p>
    *
    * @retorna uma referÃªncia para o bean de dados limitados
    */
   protected ApplicationBean1 getApplicationBean1() {
      return (ApplicationBean1) getBean("ApplicationBean1");
   }

   public String botaoSair_action() {
      painelSair.setRendered(true);
      return null;
   }

   public String botaoSairSim_action() {
      return "menu";
   }

   public String botaoSairNao_action() {
      painelSair.setRendered(false);
      return null;
   }

   public void limparCampos() {
      FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("Venda");
      FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("ItemPedidoAssociado");
      FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("ItemPedidoEmpresa");
      campoPesoCaixa.resetValue();
      campoQuantidade.resetValue();
      campoValorTotalComissao.setValue(0.0);
      campoValorVendaTotal.setValue(0.0);
      campoValorUnitario.resetValue();
      campoValorComissao.resetValue();
      campoValorVenda.setValue(0.0);

      PedidoEmpresaVO pedido=new PedidoEmpresaVO();
      dataTable1Model.setWrappedData(pedido.itemPedidoAssociado());
      dataTable3Model.setWrappedData(pedido.itemVenda());
      //dataTable3Model.setWrappedData(null);

      voltaCombo();
      //se a data não estiver vazia já chama o seleciona produto
      selecionaEmpresa();
   }
   public void desahabilitaCampos(){
      campoQuantidade.setReadonly(true);
      campoPesoCaixa.setReadonly(true);
      campoValorUnitario.setReadonly(true);
      campoValorComissao.setReadonly(true);
      campoValorVenda.setReadonly(true);
      campoValorTotalComissao.setReadonly(true);
   }
   public void habilitaCampos(){
      campoQuantidade.setReadonly(false);
      campoPesoCaixa.setReadonly(false);
      campoValorUnitario.setReadonly(false);
      campoValorComissao.setReadonly(false);
      campoValorVenda.setReadonly(false);
      campoValorTotalComissao.setReadonly(false);
   }
   /**
    * método para preencher o combo de datas conforme número de empresa
    * é chamado pelo process value change do combo empresa
    */
   public void selecionaEmpresa() {
      try {
         datas.clear();
         setDatas(new IceDecorator(PedidoEmpresaBO.class).montaComboData("empresa", "codEmpresa",
                 Integer.parseInt(comboEmpresa.getValue().toString())));
         datas.add(0, new SelectItem(0, "Selecione"));
         comboData.setValue(0);
         if (!datas.isEmpty()) {
            SelectItem item = (SelectItem) datas.get(0);
            comboData.setValue(item.getValue());
            selecionaDataPedido();
         }
      } catch (Exception e) {
         e.printStackTrace();
         datas.clear();
      }
   }

   public void voltaCombo(){

        empresas.clear();
        setEmpresas(new IceDecorator(EmpresaBO.class).montaCombo());
        empresas.add( new SelectItem(0, "Selecione"));
        comboEmpresa.setValue(0);
        datas.clear();
        datas.add(0, new SelectItem(0, "Selecione"));
        comboData.setValue(0);
    }

   public void comboEmpresa_processValueChange(ValueChangeEvent vce) {
      /**
       *assegura que o evento seja deste componente para então efetuar a ação de mudança do componente posterior
       */
      selecionaEmpresa();
      if (vce.getComponent().getId().equals(comboEmpresa.getId()) && !datas.isEmpty()) {
         selecionaDataPedido();
      }
   }

   public void comboData_processValueChange(ValueChangeEvent vce) {
      PedidoEmpresaVO pedido = (PedidoEmpresaVO) getBean("PedidoEmpresa");
      if (vce.getComponent().getId().equals(comboData.getId())) {
         if (datas.isEmpty()) {
            dataTable1Model.setWrappedData(null);
            dataTable3Model.setWrappedData(null);
         } else {
            selecionaDataPedido();
         }
      }
   }

   /**
    * método para ´reencher a tabela de pedido empresa de acordo com a data de entrega e empresa
    */
   public void selecionaDataPedido() {

      try {
         FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("PedidoEmpresa");
         PedidoEmpresaVO pedido = (PedidoEmpresaVO) new IceDecorator(PedidoEmpresaBO.class).retornaObjetoCodigo("codPedidoEmpresa",
                 Integer.parseInt(comboData.getValue().toString()));
         setBean("PedidoEmpresa", pedido);
         dataTable1Model.setWrappedData(pedido.itemPedidoAssociado());
         dataTable3Model.setWrappedData(pedido.itemVenda());
         atualizaTotal();
      } catch (Exception ex) {
      }
   }

   public String selecionaProduto() {
      try {
         //cria um novo item de pedido empresa
         ItemPedidoAssociado emp = new ItemPedidoAssociado();
         PedidoEmpresaVO pedido = (PedidoEmpresaVO) getBean("PedidoEmpresa");
         List<ItemPedidoAssociado> itemEmp = (List<ItemPedidoAssociado>) pedido.itemPedidoAssociado();
         //item é o selecionado na tabela
         emp = itemEmp.get(dataTable1Model.getRowIndex());
         itemEmp.remove(dataTable1Model.getRowIndex());
         pedido.itemPedidoAssociado().clear();
         pedido.itemPedidoAssociado().addAll(itemEmp);
         if (emp.getVenda() != null) {
            setBean("Venda", emp.getVenda());
         } else {
            setBean("Venda", new Venda());
         }
         setBean("ItemPedidoAssociado", emp);
         setBean("ItemPedidoEmpresa", emp.getItemPedidoEmpresa());
         habilitaCampos();
         campoValorComissao.setValue(new ValidaFacade().aproximarN((emp.getItemPedidoEmpresa().getValorUnitario()-emp.getPrecoUnitario())));
         
         campoPesoCaixa.setValue(emp.getItemPedidoEmpresa().getPesoCaixa());
         desahabilitaCampos();
         dataTable3Model.setWrappedData(pedido.itemVenda());
      } catch (Exception e) {
      }
      return null;
   }

   public String botaoCadastrar1_action() {
      try {

         deletarLista();
         PedidoEmpresaVO pedido = (PedidoEmpresaVO) getBean("PedidoEmpresa");
         for (int i = 0; i < pedido.itemVenda().size(); i++) {
            System.out.println("Aki entrou");
            pedido.itemVenda().get(i).getValorTotal();
            pedido.itemVenda().get(i).getValorTotalVenda();
            new IceDecorator(PedidoEmpresaBO.class).salvar(pedido.itemVenda().get(i));
         }

         limparCampos();
         msgMensagemOperacao.setValue("Operação Efetuada Com Sucesso");
         painelMensagem.setRendered(true);

      } catch (Exception ex) {
         msgMensagemOperacao.setValue("Ocorreu um erro ao Efetuar Operação");
         painelMensagem.setRendered(true);
      }

      return null;
   }

   public String botaoIncluir_action() {

       ItemPedidoAssociado itemAssociado = (ItemPedidoAssociado) getBean("ItemPedidoAssociado");
       if(itemAssociado.getQuantidadeAuxiliar()>0){

             Venda venda = (Venda) getBean("Venda");
             venda.setItemAssociado(itemAssociado);
             venda.setQuantidadeCaixas((int)itemAssociado.getQuantidadeCaixa());
             venda.setCodVenda(itemAssociado.getCodItemPedidoAssociado());
             venda.setComissaoTotal(Double.parseDouble(campoValorComissao.getValue().toString())*venda.getQuantidadeVendida());

             venda.setValorTotal(itemAssociado.getPrecoUnitario()*venda.getQuantidadeVendida());
             venda.setValorTotalVenda(venda.getValorTotal()+venda.getComissaoTotal());
             itemAssociado.setVenda(venda);
             itemAssociado.getItemPedidoEmpresa().adicionarItemAssociadoVenda(itemAssociado);
             PedidoEmpresaVO pedido = (PedidoEmpresaVO) getBean("PedidoEmpresa");
             itemAssociado.setQuantidadeAuxiliar(itemAssociado.getQuantidadeAuxiliar()-(Double.parseDouble(campoQuantidade.getValue().toString())*Double.parseDouble(campoPesoCaixa.getValue().toString())));
             //adiciona o item pedido de empresa de item pedido associado em pedido de empresa contendo ag
             venda.setItemPedidoAssociado(itemAssociado);
             dataTable3Model.setWrappedData(pedido.itemVenda());
             dataTable1Model.setWrappedData(pedido.itemPedidoAssociado());
             setBean("PedidoEmpresa", pedido);
             atualizaTotal();
             FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("ItemPedidoAssociado");
             FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("ItemPedidoEmpresa");
             FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("Venda");

             campoPesoCaixa.resetValue();
             campoQuantidade.resetValue();
             campoValorUnitario.resetValue();
             campoValorComissao.resetValue();

       }
      return null;
   }

   public void campoValorComissao_processValueChange(ValueChangeEvent vce) {
      ItemPedidoAssociado itemPedAss = (ItemPedidoAssociado) getBean("ItemPedidoAssociado");
      System.out.println(vce.getNewValue());
      System.out.println(vce.getOldValue());
      if ((Double) vce.getNewValue() < itemPedAss.getItemPedidoEmpresa().getValorUnitario()) {
         itemPedAss.setPrecoUnitario(itemPedAss.getItemPedidoEmpresa().getValorUnitario() - (Double) vce.getNewValue());
         itemPedAss.setComissao((Double) vce.getNewValue());
         itemPedAss.getItemPedidoEmpresa().adicionarItemAssociadoVenda(itemPedAss);
         setBean("ItemPedidoAssociado", itemPedAss);
      }
   }

   public String botaoConsultar_action() {
      painelConsulta.setRendered(true);
      empresasConsulta.clear();
      setEmpresasConsulta(new IceDecorator(EmpresaBO.class).montaCombo());
      empresasConsulta.add(0, new SelectItem("0","Selecione"));
      comboEmpresaConsulta.setValue(0);
      datasSelecionada.clear();
      datasSelecionada.add(0, new SelectItem("0","Selecione"));

      return null;
   }

   public String button1_action() throws Exception {
      Venda venda = (Venda) dataTable3Model.getRowData();
      vendasExcluidas.add((Venda) dataTable3Model.getRowData());

      PedidoEmpresaVO pedido = (PedidoEmpresaVO) getBean("PedidoEmpresa");
      ItemPedidoAssociado item =(ItemPedidoAssociado) getBean("ItemPedidoAssociado");
      
//      campoValorTotalComissao.setValue(Double.parseDouble(campoValorTotalComissao.getValue().toString())-venda.getComissaoTotal());
//      campoValorVenda.setValue(Double.parseDouble(campoValorVenda.getValue().toString())-venda.getValorTotal());
      item = venda.getItemPedidoAssociado();
      item.setQuantidadeAuxiliar(item.getQuantidade());
      System.out.println(venda.getQuantidadeVendida());
      item.setVenda(null);
      new IceDecorator(ItemPedidoAssociadoBO.class).salvar(item);
      pedido.adicionaItemPedido(item.getItemPedidoEmpresa());
      pedido.itemPedidoAssociado().add(item);
      setBean("PedidoEmpresa", pedido);

      dataTable1Model.setWrappedData(pedido.itemPedidoAssociado());
      dataTable3Model.setWrappedData(pedido.itemVenda());
      atualizaTotal();
      campoPesoCaixa.resetValue();
      campoQuantidade.resetValue();
      campoValorUnitario.resetValue();
      campoValorComissao.resetValue();
      return null;
   }

   public void deletarLista() {
      for (int i = 0; i < vendasExcluidas.size(); i++) {
         try {
            new IceDecorator(VendaBO.class).excluir(vendasExcluidas.get(i));
         } catch (Exception ex) {
            ex.printStackTrace();
         }
      }
   }

   public String botaoMensagemOk_action() {
      painelMensagem.setRendered(false);
      return null;
   }


    public String botaoConsultaCancelar_action() {
        painelConsulta.setRendered(false);
        return null;
    }

    public void campoValorVenda_processAction(ActionEvent ae) {
        try{
            atualizaTotal();
        }catch(Exception e){
        }

    }

    public String botaoNovo_action() {
        limparCampos();
        return null;
    }

    public String botaoLimpar_action() {
        limparCampos();
        return null;
    }
    public void atualizaTotal(){
        campoValorTotalComissao.resetValue();
        campoValorVenda.resetValue();
        campoValorVendaTotal.resetValue();
        List<Venda> l=(List<Venda>)dataTable3Model.getWrappedData();
        double vend=0.0,com=0.0,total=0.0;
        for(int i=0;i<l.size();i++){
            total=total+l.get(i).getValorTotalVenda();
            vend=vend+l.get(i).getValorTotal();
            com=com+l.get(i).getComissaoTotal();
        }
        System.out.println("aaaaaaaaaaaaaaaaaaaaaki"+(vend+com));
        campoValorTotalComissao.setValue(new ValidaFacade().aproximarN(com));
        campoValorVenda.setValue(vend);
        campoValorVendaTotal.setValue(total);
    }

    public String botaoConsultaOk_action() throws Exception {
        limparCampos();
            FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("PedidoEmpresa");
            PedidoEmpresaVO pedido = (PedidoEmpresaVO) new IceDecorator(PedidoEmpresaBO.class).retornaObjeto("codPedidoEmpresa",
                 Integer.parseInt(comboDataConsulta.getValue().toString()));
            setBean("PedidoEmpresa", pedido);
            dataTable1Model.setWrappedData(pedido.itemPedidoAssociado());
            dataTable3Model.setWrappedData(pedido.itemVenda());
            atualizaTotal();
            painelConsulta.setRendered(false);
            comboEmpresa.setValue(comboEmpresaConsulta.getValue());
            datas.clear();
            setDatas(new IceDecorator(PedidoEmpresaBO.class).montaComboData("empresa", "codEmpresa",
                 Integer.parseInt(comboEmpresaConsulta.getValue().toString())));
            datas.add(0, new SelectItem(0, "Selecione"));
            comboData.setValue(comboDataConsulta.getValue());
        return null;
    }

    public void comboEmpresaConsulta_processValueChange(ValueChangeEvent vce) {
        try {
            datasSelecionada.clear();
            setDatasSelecionada(new IceDecorator(PedidoEmpresaBO.class).montaComboData("empresa", "codEmpresa", Integer.parseInt(comboEmpresaConsulta.getValue().toString())));
            datasSelecionada.add(0, new SelectItem("0", "Selecione"));
            comboDataConsulta.setValue(0);
        } catch (Exception ex) {

        }
    }

    public void campoValorComissao_validate(FacesContext context, UIComponent component, Object value) {
//        double x=Double.parseDouble(value.toString());
//        System.out.println("vaaaalidate"+x);
//        campoValorComissao.setValue(new ValidaFacade().aproximarN(Double.parseDouble(campoValorComissao.getValue().toString())));
//        System.out.println("vaaaalidate"+campoValorComissao.getValue());
    }

        
    }
